﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

public class Post {

  public int Id { get; set; }

  public string Name { get; set; }

  public int FavCount { get; set; }

  public int ComCount { get; set; }

  public DateTime Date { get; set; }

  public string Blog { get; set; }

  public string Type { get; set; }

}

// получаем все посты, например из базы
var posts = PostRepository.GetAll();

// получаем коллекцию связей картинок с постами из dzc.
var postImgs = XDocument.Load("collection.xml")
.Root.Elements().Elements().Select(x => new
    {
    Id = x.Attribute("Id").Value,
    PostId = int.Parse(x.Attribute("Source").Value.Replace("dzimages/","")
      .Replace(".xml", ""))
    });

// Используемые фэситы
var favFacet = "Избранный";
var comFacet = "Комментарий";
var blogFacet = "Блог";
var typeFacet = "Тип";
var dateFacet = "Дата";

// создаем непосредственно саму коллекцию и добавляем в нее фэситы
var pivot = new PivotCollection();
pivot.Name = "Habrahabr";
pivot.ImageBase = "collection.xml";

pivot.FacetCategories.Add(
    new PivotFacetCategory(favFacet, PivotFacetType.Number));
pivot.FacetCategories.Add(
    new PivotFacetCategory(comFacet, PivotFacetType.Number));
pivot.FacetCategories.Add(
    new PivotFacetCategory(blogFacet, PivotFacetType.String));
pivot.FacetCategories.Add(
    new PivotFacetCategory(typeFacet, PivotFacetType.String));
pivot.FacetCategories.Add(
    new PivotFacetCategory(dateFacet, PivotFacetType.DateTime));

// создаем и добавляем итемы в коллекцию
foreach (var post in posts)
{
  var item = new PivotItem(post.Id.ToString(), pivot);
  pivot.Items.Add(item);
  item.Name = post.Name;
  //   item.Description = post.Description; по хорошему нужно добавить и описание
  //   но я не стал что бы не увеличивать объем xml
  item.Href = "http://habrahabr.ru/blogs/topic/" + post.Id;
  item.Image = new PivotImage("#" + postImgs.First(x => x.PostId == post.Id));
  item.AddFacetValues(favFacet, post.FavCount);
  item.AddFacetValues(comFacet, post.ComCount);
  item.AddFacetValues(blogFacet, post.Blog);
  item.AddFacetValues(typeFacet, post.Type);
  item.AddFacetValues(dateFacet, post.Date);
}

// сохраняем все в файл
var target = new LocalCxmlCollectionTarget("items.xml");
target.Write(new PivotCollectionBuffer(pivot));